package com.stephen.data.basic;

/**
 * @author: stephen
 * @create: 2020-02-05 11:41
 * @description: 交换两个数的值
 */
public class ChangeNum {

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a =" + a + ",b = " + b);

        /**
         * 方法-: 临时变量
         */
        // int temp = a;
        // a = b;
        // b = temp;
        // System.out.println("a =" + a + ",b = " + b);

        /**
         * 方法二: 加减运算
         * 如果数字过大,可能会超出int范围
         */
        // a = a + b; // 30
        // b = a - b; // 10
        // a = a - b; // 20
        // System.out.println("a =" + a + ",b = " + b);


        /**
         * 方法三: 异或运算
         * 只能是整数,原理:一个数异或同一个数两次,结果还是那个数
         * 这个不用担心超出int范围
         * 记住结论即可
         */
        a = a ^ b; // 01 = 10 ^ 11
        System.out.println("a = " + a);
        b = a ^ b; // 10 = 01 ^ 11 得到a
        System.out.println("b = " + b);
        a = a ^ b; // 11 = 01 ^ 10 得到b
        System.out.println("a =" + a + ",b = " + b);





    }
}
